home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 June / SGI Freeware 1998 June.iso / dist / fw_IZzip.idb / usr / freeware / src / zip / zipgrep.z / zipgrep
Text File  |  1997-09-09  |  1KB  |  58 lines

  1. #! /bin/sh
  2. # zipgrep: searches the given zip members for a string or pattern
  3. # This shell script assumes that you have installed unzip and zipinfo, which
  4. # are part of the unzip package.
  5.  
  6. pat=""
  7. opt=""
  8. while test $# -ne 0; do
  9.   case "$1" in
  10.   -e | -f) opt="$opt $1"; shift; pat="$1";;
  11.   -*)       opt="$opt $1";;
  12.    *)      if test -z "$pat"; then
  13.          pat="$1"
  14.        else
  15.          break;
  16.            fi;;
  17.   esac
  18.   shift
  19. done
  20.  
  21. if test $# = 0; then
  22.   echo "usage: `basename $0` [egrep_options] pattern zipfile [members...]"
  23.   echo searches the given zip members for a string or pattern
  24.   exit 1
  25. fi
  26. zipfile="$1"; shift
  27.  
  28. list=0
  29. silent=0
  30. opt=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
  31. case "$opt" in
  32.   *l*) list=1; opt=`echo $opt | sed s/l//`
  33. esac
  34. case "$opt" in
  35.   *h*) silent=1
  36. esac
  37. if test -n "$opt"; then
  38.   opt="-$opt"
  39. fi
  40.  
  41. res=0
  42. for i in `zipinfo -1 "$zipfile" ${1+"$@"}`; do
  43.   if test $list -eq 1; then
  44.  
  45.     unzip -p "$zipfile" "$i" | egrep $opt "$pat" > /dev/null && echo $i
  46.     r=$?
  47.   elif test $silent -eq 1; then
  48.  
  49.     unzip -p "$zipfile" "$i" | egrep $opt "$pat"
  50.     r=$?
  51.   else
  52.     unzip -p "$zipfile" "$i" | egrep $opt "$pat" | sed "s|^|${i}:|"
  53.     r=$?
  54.   fi
  55.   test "$r" -ne 0 && res="$r"
  56. done
  57. exit $res
  58.